Software products (such as computer programs) can be perfectly reproduced in an infinite number of copies. This is a major concern for publishers of the products wishing to protect their intellectual property rights; indeed, the publishers typically receive a royalty for a licensed use of each product, so that any unaccounted use or distribution of the product results in unpaid royalties. The problem has been exacerbated in the last years by the widespread diffusion of the Internet, which further facilitates the uncontrolled distribution of this kind of products.
The most straightforward way of avoiding unaccounted usage of the products is that of preventing unauthorized copying and transmission. For example, some products embed control code that limits the number of copies that can be made or disables operation of the products after a predetermined period of time has lapsed. Another technique consists of requiring possession of a software or hardware key for running the products. A different solution consists of modifying each product to include a call to a licensing management system. Every time the product is started, a corresponding request is transferred to the licensing management system. The licensing management system verifies whether the usage of the product is authorized. If the result of the verification is positive, the product can continue its execution; otherwise, the product is forced to stop.
However, the technique described above requires each product to be modified by the publisher, so that they are not of general applicability. In addition, the solutions known in the art are quite rigid and cannot be readily adapted to different requirements.
A different approach is based on the use of a software catalogue. The software catalogue lists all the known products to be metered; each product is identified by one or more executable modules indicative of its running. In this case, a licensing agent working in the background detects the executable modules that have been launched; the licensing agent then identifies the corresponding products through the software catalogue.
For this purpose, the licensing agent periodically collects a list of the executable modules that are currently running. For each executable module, the system checks if a corresponding product is listed in the catalogue, and can decide an appropriate action, or simply meter the usage of the product for future reporting and invoicing activity. If no corresponding product is found in the catalogue, the product is normally flagged as unknown and the intervention of a system administrator is normally needed to update the catalogue. Sometimes the difference between a new product and a catalogued one is very limited. Also it is possible that the “unknown” detected executable module it's just a new module of a product already listed in the catalogue. Until the catalogue is not up to date the metering and controlling activities are not possible. Obviously this manual population has some drawbacks due to the cost and the complexity of the human intervention and the delay between the detection of the unknown module and the insertion of the corresponding new entry in the catalogue.
It is an object of the present invention to provide a method and a system which alleviates the above drawbacks.